Conversation
- Created messaging package structure - Moved message-related code to dedicated files - Added proper documentation - Improved code organization and maintainability
Created button for chat screen as well as the chat screen itself. Changes to files: MainActivity.kt BottomNavHost.kt BottomNavItem.kt strings.xml(All versions)
Fix for the app crashing when the IP field in chat is empty
…based chat selection - Removed the old text field + button approach in the Chat route - Introduced ChatNodeListScreen to display nodes from NetworkScreenViewModel - Users now tap a node to navigate to the existing ChatScreen
Added message bubble feature to the chat screen. work done in ChatScreen.kt
…thub.com/grey-box/Project-Mesh into messaging-updates-wil-mesh-asu-cidse2024
…reuse - Relocated WifiListItem composable to `com.greybox.projectmesh.extension.WifiListItem` - Removed old definitions from NetworkScreen and replaced them with imports of the new utility - Updated ChatNodeListScreen and NetworkScreen to reference the shared component - Ensures a single source of UI truth for node listing and improves code maintainability
Fixed the issue of the app crashing when message were being sent.
Deleted line that was for some reason added, wasn't in the latest version so unsure where it came from.
Added different colors for message bubbles based on whether or not a message is sent by the user, or being received by the user.
- Add test device infrastructure for chat testing - Create mock virtual router and logger - Implement test device in network screen - Add basic test device appearance in chat list This allows testing of chat functionality without requiring a second physical device.
…ing build issues.
…dpoint - Added OnboardingViewModel storing typed device name in both userRepository (DB) and SharedPreferences - Created custom ViewModelProvider.Factory to avoid no-arg constructor crash in Onboarding - Updated AppServer with /myinfo route + requestRemoteUserInfo() to retrieve remote user’s name - Replaced DeviceInfoManager calls with userRepository-based lookups (DB approach) - Settings screen now reads + displays the typed device name (shared DB/prefs) - Currently not calling requestRemoteUserInfo() automatically; will add usage in next commit
…dpoint - Added OnboardingViewModel storing typed device name in both userRepository (DB) and SharedPreferences - Created custom ViewModelProvider.Factory to avoid no-arg constructor crash in Onboarding - Updated AppServer with /myinfo route + requestRemoteUserInfo() to retrieve remote user’s name - Replaced DeviceInfoManager calls with userRepository-based lookups (DB approach) - Settings screen now reads + displays the typed device name (shared DB/prefs) - Currently not calling requestRemoteUserInfo() automatically; will add usage in next commit
…idse2024' into messaging-updates-wil-mesh-asu-cidse2024 # Conflicts: # app/src/main/java/com/greybox/projectmesh/MainActivity.kt # app/src/main/java/com/greybox/projectmesh/messaging/ui/screens/ChatScreen.kt
- Updated SettingsScreen to trigger onDeviceNameChange when a new device name is submitted. - Modified the onDeviceNameChange callback to: • Retrieve the local UUID from SharedPreferences. • Update the local user in the database via UserRepository.insertOrUpdateUser. • Query connected users (via getAllConnectedUsers) from the repository and iterate over each user’s IP address. • For each connected node, convert the IP to InetAddress and call appServer.pushUserInfoTo to broadcast the updated user info. - Added detailed logging for debugging the update and broadcast processes. - Refactored the broadcast mechanism to reuse existing user repository data instead of maintaining a separate global list.
Deleted some old test code from ChatScreen.kt
- Fixed onboarding screen bug so it only shows on first startup by properly setting/checking the hasRunBefore flag. - Refactored OnboardingViewModel to use DI-provided local IP from AndroidVirtualNode. - Updated user info update logic (get user info and update) to store clean user names and IP separately. - Improved messaging logic to avoid appending the IP to the user name.
-Added time stamps to the bottom right of message bubbles.
-created conversation entity for tracking chat history -implement conversationdao and repository for data management -added ConversationHomeScreens UI with online/offline indicators - update navigation - integrate history with existing chat screen and user profiles - added support for offline messaging history - improved UX with status indicators and unread counts - modified to 2 test users: one online and one offline
…ting app git status ! make sure to clear data on app before running this git status
…TTP Post Was originally being sent via HTTP GET which has some problems.
1. Moved Directory Creation task off the main thread (slightly reduce app startup time). 2. Reconstructed Home Screen UI (replaced Column with LazyColumn for faster UI rendering) 3. Added Splash Screen for Android 11 and below (Ensure a smooth UI transition during app launch) 4. Fixed an issue on Android 10 where the default directory for saving received files could not be created. 5. Fixed a bug where tapping the recycle bin icon on the Receive screen could sometimes delete multiple records instead of the selected one. 6. Implemented swipe-to-delete functionality on the Send Screen, allowing users to swipe left to remove the record. 7. Add Log Screen to display detailed information about network activity, internal Meshrabiya operations, and runtime errors. 8. Update Log Screen with Multi-Selection Copy.
…n Debug Mode the app shows the Log tab
…ing it a behavior when in release to not show the logs
…ld-Type # Conflicts: # app/src/main/java/com/greybox/projectmesh/messaging/network/MessageNetworkHandler.kt # app/src/main/java/com/greybox/projectmesh/navigation/BottomNavHost.kt
|
|
||
|
|
||
| import com.greybox.projectmesh.views.RequestPermissionsScreen | ||
| import org.kodein.di.android.BuildConfig |
There was a problem hiding this comment.
This is importing Kodein’s BuildConfig, not the app’s BuildConfig. Because of that, debug builds will still look like release here and Timber will use the wrong tree. Please switch this to the app module BuildConfig.
| <provider | ||
| android:name="androidx.core.content.FileProvider" | ||
| android:authorities="com.greybox.projectmesh.fileprovider" | ||
| android:authorities="${applicationId}.fileprovider" |
There was a problem hiding this comment.
The provider authority now changes with the application ID, but the file-opening code still uses the old hardcoded authority. In debug builds this will mismatch and opening received files will fail. Please make the FileProvider authority consistent everywhere.
| getDefaultProguardFile("proguard-android-optimize.txt"), | ||
| "proguard-rules.pro" | ||
| ) | ||
| signingConfig = signingConfigs.getByName("debug") |
There was a problem hiding this comment.
The release build is using the debug signing key here. That will break real release installs/updates and can’t be used for store distribution. Please remove this or point it at the real release signing config.
taimuradam
left a comment
There was a problem hiding this comment.
It looks good, I have proposed 3 small changes in app/src/main/java/com/greybox/projectmesh/MainActivity.kt (line 97), app/src/main/AndroidManifest.xml (line 86) and app/build.gradle.kts (line 33).
Includes Features like: